/**
 * 
 */
package com.momosw.games.engine;

import java.util.HashMap;
import java.util.Map;

import com.momosw.games.jericho.board.Card;
import com.momosw.games.jericho.board.TrumpetsCard;
import com.momosw.games.jericho.board.WallCard;
import com.momosw.games.jericho.board.WallType;

/**
 * <b>Project:</b> JerichoCardGame<br />
 * <b>Package:</b> com.momosw.games.engine<br />
 * <b>Class:</b> GameConfiguration.java<br />
 * <br />
 * <i>GSI 2011</i><br />
 *
 * @author Miguel Coronado (miguelcb84@gmail.com)
 * @version	Aug 17, 2011
 *
 */
public class GameConfiguration {

    /** */
    private int maxPlayers;
    /** */
    private int minPlayers;
    /** */
    private Map<Card, Integer> deckConfig;
    /** */
    private int scoringPhasesCount = 3;

    /**
     * Constructor.
     */
    public GameConfiguration () {
        this.maxPlayers = 5;
        this.minPlayers = 1;
        
        this.deckConfig = new HashMap<Card, Integer>();
        deckConfig.put(new WallCard(WallType.RedWall, 1), 4);
        deckConfig.put(new WallCard(WallType.RedWall, 3), 6);
        deckConfig.put(new WallCard(WallType.RedWall, 4), 4);
        deckConfig.put(new WallCard(WallType.RedWall, 5), 2);
        deckConfig.put(new WallCard(WallType.RedWall, 7), 1);
        
        deckConfig.put(new WallCard(WallType.BlueWall, 1), 4);
        deckConfig.put(new WallCard(WallType.BlueWall, 3), 6);
        deckConfig.put(new WallCard(WallType.BlueWall, 4), 4);
        deckConfig.put(new WallCard(WallType.BlueWall, 5), 2);
        deckConfig.put(new WallCard(WallType.BlueWall, 7), 1);
        
        deckConfig.put(new WallCard(WallType.YellowWall, 1), 4);
        deckConfig.put(new WallCard(WallType.YellowWall, 3), 6);
        deckConfig.put(new WallCard(WallType.YellowWall, 4), 4);
        deckConfig.put(new WallCard(WallType.YellowWall, 5), 2);
        deckConfig.put(new WallCard(WallType.YellowWall, 7), 1);
        
        deckConfig.put(new WallCard(WallType.GreyWall, 1), 4);
        deckConfig.put(new WallCard(WallType.GreyWall, 3), 6);
        deckConfig.put(new WallCard(WallType.GreyWall, 4), 4);
        deckConfig.put(new WallCard(WallType.GreyWall, 5), 2);
        deckConfig.put(new WallCard(WallType.GreyWall, 7), 1);
        
        deckConfig.put(new WallCard(WallType.BrownWall, 1), 4);
        deckConfig.put(new WallCard(WallType.BrownWall, 3), 6);
        deckConfig.put(new WallCard(WallType.BrownWall, 4), 4);
        deckConfig.put(new WallCard(WallType.BrownWall, 5), 2);
        deckConfig.put(new WallCard(WallType.BrownWall, 7), 1);
    
        deckConfig.put(new TrumpetsCard(), 22);
    }
    
    /**
     * @return the deckConfig
     */
    public Map<Card, Integer> getDeckConfig() {
        return deckConfig;
    }
    
    /**
     * @return the maxPlayers
     */
    public int getMaxPlayers() {
        return maxPlayers;
    }
    
    /**
     * @return the minPlayers
     */
    public int getMinPlayers() {
        return minPlayers;
    }

    /**
     * @return scoringPhasesCount
     */
    public int getScoringCount() {
        return scoringPhasesCount;
    }
    
}

